package com.chenjt.netty.thirteen_handler.client;

import com.chenjt.netty.thirteen_handler.MyByteToLongDecoder;
import com.chenjt.netty.thirteen_handler.MyByteToLongReplayingDecoder;
import com.chenjt.netty.thirteen_handler.MyLongToByteEncoder;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;

/**
 * 注释：
 *
 * @author chenjt
 * @date 2024/9/6 11:08
 */
public class MyClientInitializer extends ChannelInitializer<SocketChannel> {
    @Override
    protected void initChannel(SocketChannel ch) throws Exception {
        ChannelPipeline pipeline = ch.pipeline();

        /**
         * 添加自定义编码器和解码器，顺序无所谓，因为都是不在同一个链上的
         * 每个入站处理器（继承ByteToMessageDecoder类，重写decode()）处理完数据之后
         * 会将数据添加到decode()第三个参数：List<Object>中，
         * 下一个处理器会跟着取到上一个处理器处理完的数据
         */
//        pipeline.addLast(new MyByteToLongDecoder());
        pipeline.addLast(new MyByteToLongReplayingDecoder());
        pipeline.addLast(new MyLongToByteEncoder());

        // 入站处理器
        pipeline.addLast(new MyClientHandler());
    }
}
